package com.dkd.skuClass.service.impl;

import java.util.List;
import java.util.concurrent.TimeUnit;

import com.dkd.common.core.redis.RedisCache;
import com.dkd.common.zUtils.ZThreadPool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.dkd.skuClass.mapper.TbSkuClassMapper;
import com.dkd.skuClass.domain.TbSkuClass;
import com.dkd.skuClass.service.ITbSkuClassService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 商品类型Service业务层处理
 * 
 * @author zwy
 * @date 2025-05-07
 */
@Service
public class TbSkuClassServiceImpl implements ITbSkuClassService 
{
    @Autowired
    private TbSkuClassMapper tbSkuClassMapper;

    @Autowired
    RedisCache redisCache;

    @Autowired
    private ZThreadPool threadPool;
    /**
     * 查询商品类型
     * 
     * @param classId 商品类型主键
     * @return 商品类型
     */
    @Override
    public TbSkuClass selectTbSkuClassByClassId(Long classId)
    {
        return tbSkuClassMapper.selectTbSkuClassByClassId(classId);
    }

    /**
     * 查询商品类型列表
     * 
     * @param tbSkuClass 商品类型
     * @return 商品类型
     */
    @Override
    @Transactional
    public List<TbSkuClass> selectTbSkuClassList(TbSkuClass tbSkuClass)
    {
        List<TbSkuClass> list = tbSkuClassMapper.selectTbSkuClassList(tbSkuClass);
        if (redisCache.getCacheList("tbSkuClassList").isEmpty()){
            redisCache.setCacheList("tbSkuClassList",list);
            redisCache.expire("tbSkuClassList",500, TimeUnit.SECONDS);
            return list;
        }else {
            return redisCache.getCacheList("tbSkuClassList");
        }
    }

    /**
     * 新增商品类型
     * 
     * @param tbSkuClass 商品类型
     * @return 结果
     */
    @Override
    @Transactional
    public int insertTbSkuClass(TbSkuClass tbSkuClass)
    {
        //删除缓存
        redisCache.deleteObject("tbSkuClassList");
        //插入数据库
        tbSkuClassMapper.insertTbSkuClass(tbSkuClass);
        //更新缓存（延迟双删）
        return threadPool.ScheduledThreadPool("tbSkuClassList",20,TimeUnit.SECONDS);
    }

    /**
     * 修改商品类型
     * 
     * @param tbSkuClass 商品类型
     * @return 结果
     */
    @Override
    @Transactional
    public int updateTbSkuClass(TbSkuClass tbSkuClass)
    {
        //删除缓存
        redisCache.deleteObject("tbSkuClassList");
        //更新数据库
        tbSkuClassMapper.updateTbSkuClass(tbSkuClass);
        //延迟双删
        return threadPool.ScheduledThreadPool("tbSkuClassList",20,TimeUnit.SECONDS);
    }

    /**
     * 批量删除商品类型
     * 
     * @param classIds 需要删除的商品类型主键
     * @return 结果
     */
    @Override
    public int deleteTbSkuClassByClassIds(Long[] classIds)
    {
        return tbSkuClassMapper.deleteTbSkuClassByClassIds(classIds);
    }

    /**
     * 删除商品类型信息
     * 
     * @param classId 商品类型主键
     * @return 结果
     */
    @Override
    public int deleteTbSkuClassByClassId(Long classId)
    {
        return tbSkuClassMapper.deleteTbSkuClassByClassId(classId);
    }
}
